package com.appheader.rongmaphone.utils.json;


import com.appheader.rongmaphone.entity.CloudEntity;
import com.appheader.rongmaphone.user.UserInfo;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;


/**
 * JSON转换工具类 JSONObject装换为JavaBean需具备以下条件：
 * <p/>
 * 1. JavaBean必须标注@JSONEntity注解
 * <p/>
 * <p/>
 * 2. 待转换的变量必须标注@JSONField注解，属性说明：
 * <p/>
 * （1）jsonKey：该变量对应JSON中的字段名，如果不设置该值，默认为该变量的名称
 * （2）defaultStringValue：当该变量为String类型时，JSON中如果没有该字段，默认填充值
 * （3）defaultIntValue,defaultBooleanValue,defaulDoubleValue,defaultLongValue同理
 * <p/>
 * <p/>
 * 3. 支持的变量数据类型：
 * String，int/Integer,boolean/Boolean,long/Long,double/Double,List/
 * ArrayList,JavaBean
 * <p/>
 * <p/>
 * 4. 当变量类型为List或ArrayList时，需指定集合的Type，如List<T>，且T这个类必须也标注了@JSONEntity，
 * 且该T类中需要填充的变量也要标注@JSONEntity
 * <p/>
 * <p/>
 * 5. 当变量类型为JavaBean（自定义类），该类必须也标注了@JSONEntity，且该类中需要填充的变量也要标注@JSONEntity
 *
 * @author alaowan
 */
public class JSONUtil {

    //用户信息json字符串
    public static UserInfo userInfos(String string) {
        List<UserInfo> data = new ArrayList<UserInfo>();
        UserInfo entity = new UserInfo();
        JSONObject jsonObject = null;
        try {
            jsonObject = new JSONObject(string);
            JSONObject jsonObject1 = jsonObject.getJSONObject("data");
//
            String sessionId = jsonObject1.getString("sessionId");
            String uid = jsonObject1.getString("uid");
            String mobile = jsonObject1.getString("mobile");
            String personName = jsonObject1.getString("personName");

//            Log.e("JSON", "userInfos: " + sessionId + "uid:" + uid + "mobile:" + mobile + "personName:" + personName);

            entity.setSessionId(sessionId);
            entity.setUid(uid);
            entity.setMobile(mobile);
            entity.setPersonName(personName);

//            data.add(entity);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return entity;
    }

    public static List<CloudEntity> getCloudInfos(String str) {
        List<CloudEntity> data = new ArrayList<>();
        try {
            JSONObject jsonObject = new JSONObject(str);
            JSONObject jsonObject1 = jsonObject.getJSONObject("data");
            JSONArray jsonArray = jsonObject1.getJSONArray("list");
            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject jsonObject2 = jsonArray.getJSONObject(i);
                String name = jsonObject2.getString("name");
                String picId = jsonObject2.getString("picId");
                String id = jsonObject2.getString("id");
                String lastModifyTime = jsonObject2.getString("lastModifyTime");
                CloudEntity entity = new CloudEntity();
                entity.setName(name);
                entity.setPicId(picId);
                entity.setId(id);
                entity.setLastModifyTime(lastModifyTime);
//
                data.add(entity);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return data;
    }
}
